// 公共逻辑

//配置请求基地址
axios.defaults.baseURL = 'https://hmajax.itheima.net'

// 封装轻提示
function showToast(msg) {
  // 获取弹框标签
  const myToast = document.querySelector('.my-toast')
  // 实例化弹框
  const dialog = new bootstrap.Toast(myToast)
  // 给弹框设置内容
  document.querySelector('.toast-body').innerHTML = msg
  // 显示弹框
  dialog.show()
}


//页面访问控制（页面鉴权）
function checkLogin(){
  // 判断用户是否有权限访问页面--权限--通过TOKEN来确定
  //如果登录有token就可以跳转  如果没有token就需要先登录
  const token = localStorage.getItem('token')
  if(!token){
  setTimeout(()=>{
    location.href = './login.html'
  },1500)
 }
}

//退出登陆业务
function logout(){
  const logout = document.querySelector('#logout')
  logout.addEventListener('click', function () {
    //清空用户名
    localStorage.removeItem('user')
    //清空token
    localStorage.removeItem('token')

    // 页面跳转
    setTimeout(() => {
      location.href='./login.html'
    }, 1000);
  })
}

// 渲染用户名 
function renderUser(){
  //从本地获取用户名
  const user = localStorage.getItem('user')
  document.querySelector('.username').innerHTML=user
}


// 添加请求拦截器
axios.interceptors.request.use(function(config){
  //获取token
  const token = localStorage.getItem('token')
  // 判断是否有token
  if(token){
    //在请求头统一设置token
    config.headers.Authorization=token
  }
  return config;
},function(error){
  return Promise.reject(error)
})

// 添加响应拦截器
axios.interceptors.response.use(function (response) {
  // 2xx 范围内的状态码都会触发该函数。
  // 对响应数据做点什么
  // console.log('response',response.data)
  //因为后台数据嵌套较深，通过响应拦截器进行数据剥离
  return response.data;
}, function (error) {
  // 超出 2xx 范围的状态码都会触发该函数。
  // 拿到token失效的错误信息
  // console.dir(error)
  // 判断token是否失效 如失效则重新获取token
  if(error.response.status===401){
    //清楚用户名和token
    localStorage.removeItem('user')
    localStorage.removeItem('token')
    // 跳转到登录页面
    setTimeout(()=>{
      location.href='login.html'
    },1000)
  }
  // 对响应错误做点什么
  return Promise.reject(error);
});

